/*
-----------------------------------------------------------------------------
This source file is part of the
   ___                 __    __ _ _    _ 
  /___\__ _ _ __ ___  / / /\ \ (_) | _(_)
 //  // _` | '__/ _ \ \ \/  \/ / | |/ / |
/ \_// (_| | | |  __/  \  /\  /| |   <| |
\___/ \__, |_|  \___|   \/  \/ |_|_|\_\_|
      |___/                              
      Tutorial Framework
      http://www.ogre3d.org/tikiwiki/
-----------------------------------------------------------------------------
*/
#ifndef __GameApp_h_
#define __GameApp_h_

#include "BaseApplication.h"

//#include <CEGUI/CEGUI.H>
#include <C:/cgt/cgt-lib/CEGUI/cegui/include/CEGUI.h>
//#include <CEGUI/RendererModules/Ogre/CEGUIOgreRenderer.h>
#include <C:/cgt/cgt-lib/CEGUI/cegui/include/RendererModules/Ogre/CEGUIOgreRenderer.h>




class GameApp : public BaseApplication
{
public:
    GameApp(void);
    virtual ~GameApp(void);

protected:

	CEGUI::OgreRenderer* mRenderer;

    virtual void createScene(void);

	virtual void createFrameListener(void);

	//Framelistener
	virtual bool frameRenderingQueued(const Ogre::FrameEvent& evt);

	//Key Listener
	virtual bool keyPressed( const OIS::KeyEvent &arg );
    virtual bool keyReleased( const OIS::KeyEvent &arg );

	// OIS::MouseListener
    virtual bool mouseMoved( const OIS::MouseEvent &arg );
    virtual bool mousePressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id );
    virtual bool mouseReleased( const OIS::MouseEvent &arg, OIS::MouseButtonID id );

	// entities
	Ogre::Entity* object;
	Ogre::Entity* floor;
	Ogre::MovablePlane* mPlane;

	// scene nodes
	Ogre::SceneNode* objectNode;
	Ogre::SceneNode* floorNode;

    Ogre::SceneNode* mCamNode;

	
	bool quit(const CEGUI::EventArgs &e);

private:
	// Process input from Keyboard or mouse
	bool processInput(const Ogre::FrameEvent& evt);
};

#endif // #ifndef __TutorialApplication_h_
